<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .progress {
      height: 25px;
      width: 400px;
      border-radius: 15px;
      background-color: #272425;
      border: 3px solid #272425;
      box-sizing: border-box;
      margin-bottom: 30px;
    }

    .inner {
      width: 50%;
      height: 20px;
      border-radius: 10px;
      text-align: right;
      position: relative;
      background-color: #409eff;
      background-size: 20px 20px;
      box-sizing: border-box;
      transition: all 1s;
    }

    .inner span {
      position: absolute;
      right: -20px;
      bottom: -25px;
    }
  </style>
</head>

<body>
  <div id="app">
    <!-- 外层盒子底色 （黑色） -->
    <div class="progress">
      <!-- 内层盒子 - 进度（蓝色） -->
      <div class="inner" :style="{width:percent+'%',opacity:opacity}">
        <span>{{ percent }}%</span>
      </div>
    </div>
    <button @click="add">设置10%</button>
    <button @click="add">设置50%</button>
    <button @click="add">设置75%</button>
    <button @click="add">设置100%</button>
    <button @click="opacity=0.0">透明度0.0</button>
    <button @click="opacity=0.1">透明度0.1</button>
    <button @click="opacity=0.5">透明度0.5</button>
    <button @click="opacity=1.0">透明度1.0</button>
  </div>
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.14/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        percent: 30,
        opacity: 1.0
      },
      methods: {
        add(e) {
          // console.log(e.target.innerHTML.substr(2).replace('%', ''));
          // this.percent = e.target.innerHTML.slice(2, 4)
          this.percent = e.target.innerHTML.substr(2).replace('%', '')
        }
      }
    })
  </script>
</body>

</html>